iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

if...else

假設程式碼要在條件式成立後執行,條件式不成立時要執行其他程式碼,我們就可以用 if ... else 來寫

先來介紹 if
可以應用的時機在,條件式成立時,我想執行某個程式碼或者印出某句話
讓我們來看看範例

當 5 > 3 的時候,就要印出 5 is greater than 3

fn main() {
    if 5 > 3 {
        println!("5 is greater than 3")
    }
}

# 結果:5 is greater than 3

但如果不成立也需要另外執行程式碼或印出其他東西時,就要加上 else

fn main() {
    let num = 2;
    if num >= 3 {
        println!("num is greater than 3")
    } else {
        println!("num is less than 3")
    }
}

# 結果:num is less than 3

但如果可能會有多種結果,可以再加入 else if

fn main() {
    let num = -2;
    if num > 0 {
        println!("num is a positive number")
    } else if num < 0 {
        println!("num is a negative number")
    } else {
        println!("num is equal to zero")
    }
}

# 結果:num is a negative number

loop

這是迴圈,如果我們沒有加上 break 的話,他就會一直跑到你關掉為止

fn main() {
    loop {
        println!("oh my god")
    }
}

可以編譯完執行看看,會跑到沒完沒了,用 ctrl + c 即可停止

我們可以搭配 if ... else 來玩看看

fn main() {
    let mut num = 3;
    loop {
        num += 1;
        println!("{}", num);
        if num > 10 {
            println!("num is greater than 10");
            break;
        }
    }
}

結果:4
5
6
7
8
9
10
11
num is greater than 10

while

while 是指當這個運算式結果是 true 的時候會執行

直到結果變成 false 為止

但如果結果一直都是 true ,就會變成無窮迴圈,需要注意一下

fn main() {
    let mut num = 3;
    while num < 6 {
        println!("{} is less than 6", num);

        num += 1;
    }
}

結果:
3 is less than 6
4 is less than 6
5 is less than 6

for

for 是相對更有彈性的回圈,你可以設定起點及終點

在抵達終點以前,迴圈會不斷地執行,所以記得讓運算式有方法可以抵達終點!

以下範例,我們要讓 i 每跑一次迴圈就 +1 ,直到 i 為 6 止
如果沒有讓他 +1 ,就會陷入無窮迴圈了!

fn main() {
    for mut i in 1..6 {
        println!("{} is less than 6", i);
        i += 1
    }
}
結果:
1 is less than 6
2 is less than 6
3 is less than 6
4 is less than 6
5 is less than 6

break continue

break 指的是我要在這時候終止

continue 指的是我要 skip 這一次,前往下次


上一篇
Day 03 轉換型別及邏輯判斷
下一篇
Day 05 - Rust 的 Data 類型
系列文
成為程式界的 F1 賽車手,用 30 天認識 Rust 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Hell Kiki
iT邦新手 4 級 ‧ 2023-09-19 19:52:42

提醒一下
最後for跑出來結果是下面:

1 is less than 6
2 is less than 6
3 is less than 6
4 is less than 6
5 is less than 6

不過這不是重點,小小提一下意見,最後的 i += 1 應該是無作用的操作
我在for i in range 裡面比較少去mut i ,我是比較buy in 函數式的思維減少可變的東西 XDD

收到!感謝指正
也感謝提供見解 /images/emoticon/emoticon74.gif

Hell Kiki iT邦新手 4 級 ‧ 2023-09-20 08:24:26 檢舉

你可能沒理解我想表達的:

fn main() {
    for i in 1..6 {
        println!("{} is less than 6", i);
    }
}

這樣也可以正常跑一樣的結果,不需要 i+=1for .. in range的迴圈本身就是有限的

我要留言

立即登入留言